package com.pdd.mall.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pdd.mall.dto.ReviewParam;
import com.pdd.mall.entity.Review;

import java.util.List;

/**
 * 评价服务接口
 */
public interface ReviewService {

    /**
     * 添加评价
     * @param param 评价参数
     * @param userId 用户ID
     * @return 添加的评价
     */
    Review addReview(ReviewParam param, Long userId);

    /**
     * 获取商品评价列表
     * @param productId 商品ID
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 评价分页列表
     */
    Page<Review> getProductReviews(Long productId, Integer pageNum, Integer pageSize);

    /**
     * 获取用户评价列表
     * @param userId 用户ID
     * @param pageNum 页码
     * @param pageSize 每页数量
     * @return 评价分页列表
     */
    Page<Review> getUserReviews(Long userId, Integer pageNum, Integer pageSize);

    /**
     * 检查订单是否已评价
     * @param orderNo 订单编号
     * @param productId 商品ID
     * @return 是否已评价
     */
    boolean isOrderReviewed(String orderNo, Long productId);

    /**
     * 获取订单评价
     * @param orderNo 订单编号
     * @param productId 商品ID
     * @return 评价信息
     */
    Review getOrderReview(String orderNo, Long productId);

    /**
     * 删除评价
     * @param id 评价ID
     * @param userId 用户ID
     * @return 是否删除成功
     */
    boolean deleteReview(Long id, Long userId);
}
